package com.hsgene.consumables.persistence;

import com.hsgene.consumables.condition.UnitCondition;
import com.hsgene.consumables.domain.ConsumablesUnitInfo;
import com.hsgene.consumables.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface ConsumablesUnitRepository extends BaseMapper<ConsumablesUnitInfo> {

    /**
     * 查询列表
     *
     * @param condition 查询条件
     * @return
     */
    List<ConsumablesUnitInfo> queryUnitInfo(@Param("condition") UnitCondition condition);

    int getCount(@Param("condition") UnitCondition condition);

    /**
     * 查询数据是否存在
     *
     * @param id          id
     * @param stockUnit   进货单位
     * @param convertUnit 出货单位
     * @param spec        规格
     * @return
     */
    @Select("select 1 from genetic_goods_unit where id=#{id} and stock_unit=#{stockUnit} " +
            "and convert_unit = #{convertUnit} and spec=#{spec} and del_flag=0 limit 1")
    Object queryIsExists(@Param("id") String id, @Param("stockUnit") String stockUnit, @Param("convertUnit") String
            convertUnit, @Param("spec") Integer spec);

    /**
     * 耗材单位详情
     *
     * @param unitId
     * @return
     */
    ConsumablesUnitInfo getUnitDetailsInfo(@Param("unitId") String unitId);

    /**
     * 批量删除
     * @param infosNoused
     */
    void deleteUnitInfoMore(List<ConsumablesUnitInfo> infosNoused);

    /**
     * 插入单位
     * @param consumablesUnitInfo
     * @return
     */
    int insertUnit(ConsumablesUnitInfo consumablesUnitInfo);

    /**
     * 更新单位
     * @param unitInfo
     * @return
     */
    void updateUnitInfo(ConsumablesUnitInfo unitInfo);

    /**
     * 根据进货单位，领货单位，规格查找单位
     * @param unitInfo
     * @return
     */
    ConsumablesUnitInfo getUnitDetailsInfoByInfo(ConsumablesUnitInfo unitInfo);
}
